#ifndef __PUBLIC_H__
#define __PUBLIC_H__
#include<functional>
#include<unordered_map>
#include<memory>
#include"humanbuilder.h"
#include"demonbuilder.h"
#include"fairybuilder.h"
using CreateFunction = std::function<std::shared_ptr<ActorBuilder>()>;
static std::unordered_map<std::string, CreateFunction> builderMap =
{
	{"manBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<ManBuilder>(); }},
	{"womanBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<WomanBuilder>(); }},
	{"demonMaleBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<DemonMaleBuilder>(); }},
	{"demonFemaleBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<DemonFemaleBuilder>(); }},
	{"fairyMaleBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<FairyMaleBuilder>(); }},
	{"fairyFemaleBuilder", []()->std::shared_ptr<ActorBuilder> {return make_shared<FairyFemaleBuilder>(); }}
};
#endif